www.gusucode.com > ROCBOSS微社区-微信论坛程序 v2.1PHP源码程序 > ROCBOSS微社区-微信论坛程序 v2.1/ROCBOSS_v2.1.0/ROCBOSS_v2.1.0/system/util/Utils.php
<?php # 工具类 namespace system\util; class Utils { /** * 执行时间 * @return string */ public function runtime() { global $sys_starttime; $mtime = explode(' ', microtime()); $sys_runtime = number_format(($mtime[1] + $mtime[0] - $sys_starttime), 4); unset($sys_starttime); return $sys_runtime . 's'; } /** * 单向加密函数(三层盐值) * @param $str * @param string $salt * @return string */ public function encrypt($str, $salt = 'rocboss') { return md5(md5(md5($str . $salt) . $salt) . $salt); } /** * 生成指定长度的随机码 * @param int $n * @return string */ public function getRandomCode($n = 32) { return substr(str_shuffle('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $n); } /** * 邮箱合法性判断 * @param string $email * @return boolean */ public function checkEmailValidity($email) { $pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i"; return preg_match($pattern, $email); } /** * 用户名合法性判断 * @param string $nickname * @return boolean */ public function checkNickname($nickname) { if (strlen($nickname) < 3 || $this->getStrlen($nickname) < 2) { return '用户名太短了'; } if ($this->getStrlen($nickname) > 10) { return '用户名太长了'; } if (preg_match('/\s/', $nickname) || strpos($nickname,' ')) { return '用户名不允许存在空格'; } if (is_numeric(substr($nickname, 0, 1)) || substr($nickname, 0, 1) == "_") { return '用户名不能以数字和下划线开头'; } if (substr($nickname, -1, 1) == "_") { return '用户名不能以下划线结尾'; } if (!preg_match('/^[\x{4e00}-\x{9fa5}_a-zA-Z0-9]+$/u', $nickname)) { return '用户名只能用汉字、英文、数字及下划线'; } for ($i = 0, $l = $this->getStrlen($nickname); $i < $l; $i++) { if ($this->textCount($nickname, $this->getSubstr($nickname, $i, 1)) > 4) { return '用户名内重复字符太多'; } } return ''; } /** * 获取当前分页 * @return int */ public function getCurrentPage() { return isset($GLOBALS['Router']['params']['page']) && intval($GLOBALS['Router']['params']['page']) > 0 ? intval($GLOBALS['Router']['params']['page']) : 1; } /** * 裁剪字符串 * @param string $str * @param int $start * @param int $len * @return string */ public function getSubstr($str, $start, $len) { return mb_substr($str, $start, $len, 'utf-8'); } /** * 格式化时间 * @param string $unixTime * @return string */ public function formatTime($unixTime) { $showTime = date('Y', $unixTime) . "年" . date('n', $unixTime) . "月" . date('j', $unixTime) . "日 " . date('H:i', $unixTime); if (date('Y', $unixTime) == date('Y')) { $showTime = date('n', $unixTime) . "月" . date('j', $unixTime) . "日 " . date('H:i', $unixTime); if (date('n.j', $unixTime) == date('n.j')) { $timeDifference = time() - $unixTime + 1; if ($timeDifference < 60) { return $timeDifference . "秒前"; } if ($timeDifference >= 60 && $timeDifference < 3600) { return floor($timeDifference / 60) . "分钟前"; } return date('H:i', $unixTime); } if (date('n.j', ($unixTime + 86400)) == date('n.j')) { return "昨天 " . date('H:i', $unixTime); } } return $showTime; } /** * 获取文段自动摘要 * @param string $str_cut * @param int $length * @return string */ public function cutSubstr($str_cut, $length = 64) { $str_cut = preg_replace('/(\[\:[0-9]+\])/i', '图片', $str_cut); $str_cut = preg_replace('/\[p\]/i', ' ', $str_cut); if (mb_strlen(trim($str_cut), 'utf8') > $length) { return trim(mb_substr($str_cut, 0, $length, 'utf-8')) . '...'; } else { return trim($str_cut); } } /** * 获取字符串的长度 * @param string $str * @return int */ public function getStrlen($str) { return mb_strlen($str, "utf-8"); } /** * 获取子串出现的次数 * @param string $str * @param string $needle * @return int */ public function textCount($str, $needle) { return mb_substr_count($str, $needle, 'utf-8'); } /** * 解析URL地址 * @param string $str * @return string */ public function parseUrl($str) { $auto_arr = array( "/(?<=[^\]a-z0-9-=\"'\\/])((https?|ftp):\/\/)([a-z0-9\/\-_+=.~!%@?#%&;:$\\│]+)/i", "/(?<=[^\]a-z0-9\/\-_.~?=:.])([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4}))/i" ); $auto_url = array( '<a href="\\1\\3" target="_blank" class="url">\\1\\3</a>', '<a href="mailto:\\0" class="url">\\0</a>' ); return preg_replace($auto_arr, $auto_url, ' ' . $str); } /** * @用户解析 * @param string $str * @return string */ public function parseUser($str) { return preg_replace_callback('/\@([^[:punct:]\s]{3,39})([\s]+)/', array($this, 'atName'), $str . ' '); } /** * @用户解析 callback 方法 * @param string $str * @return string */ public function atName($str) { if (in_array($str[1], array( "。", "?", ",", "!" ))) { return $str[0]; } return '<span class=atname><a href="/@' . urlencode($str[1]) . '">@' . $str[1] . '</a></span>' . $str[2]; } } ?>